using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using ADL;
using AEL.COM;
using BEL;
    
    namespace DEL.COM
    {
    /// <summary>
    /// Acceso a la base de datos
    /// Modulo:Compras ta
    /// Tabla:Com_Articulo_Atributo
    /// Esta implementado para que no se puedan borrar los atributos que estan dados por la clase al articulo
    /// </summary>
    public class DO_Com_Articulo_Atributo
    {
    #region Adapter
        private static CEL.COM.DO_Com_Articulo_Atributo _adpCom_Articulo_Atributo;
        private static CEL.COM.DO_Com_Articulo_Atributo adpCom_Articulo_Atributo
        {
            get
            {
                if (_adpCom_Articulo_Atributo == null)
                    _adpCom_Articulo_Atributo = new CEL.COM.DO_Com_Articulo_Atributo();
                return _adpCom_Articulo_Atributo;
            }
        }

        private static CEL.COM.DO_Com_Articulo _adpCom_Articulo;
        private static CEL.COM.DO_Com_Articulo adpCom_Articulo
        {
            get
            {
                if (_adpCom_Articulo == null)
                    _adpCom_Articulo = new CEL.COM.DO_Com_Articulo();
                return _adpCom_Articulo;
            }
        }

        private static CEL.COM.DO_Com_Clase_Atributo _adpCom_Clase_Atributo;
        private static CEL.COM.DO_Com_Clase_Atributo adpCom_Clase_Atributo
        {
            get
            {
                if (_adpCom_Clase_Atributo == null)
                    _adpCom_Clase_Atributo = new CEL.COM.DO_Com_Clase_Atributo();
                return _adpCom_Clase_Atributo;
            }
        }
    #endregion

    #region Operaciones

        
        public static int Delete(Scope s, Com_Articulo_Atributo oCom_Articulo_Atributo)
        {
            int resultado = 0;
            int aux = 0;
            System.Exception eCaso;
            System.Exception otroEX;
            try
            {
                adpCom_Articulo.Adapter.BeginTransaction();
                adpCom_Articulo_Atributo.Adapter.Transaction = adpCom_Articulo.Adapter.Transaction;

                //obtengo la clase que tiene ese articulo
                List<Com_Articulo> articulo = adpCom_Articulo.GetById(s, oCom_Articulo_Atributo.Com_Articulo_Id);
                
                //obtengo los atributos que tiene la clase
                List<Com_Clase_Atributo> clase_atributo = adpCom_Clase_Atributo.GetByClaseArticulos(s, oCom_Articulo_Atributo.Com_Clase_Id);

                foreach (Com_Clase_Atributo v_clase_atributo in clase_atributo)
                {
                    if (oCom_Articulo_Atributo.Com_Atributo_Id == v_clase_atributo.Com_Atributo_Id)
                    {
                        aux = 1;
                    }
                }

                if (aux == 0)
                {
                    resultado = adpCom_Articulo_Atributo.Delete(s, oCom_Articulo_Atributo);

                }
                else
                {
                    eCaso = new System.Exception("");
                    otroEX = new System.Exception(TXT_Mensajes._MSJ48, eCaso);
                    throw (otroEX);
                }

                adpCom_Articulo.Adapter.CommitTransaction();
            }
            catch (Exception e)
            {
                adpCom_Articulo.Adapter.RollbackTransaction();
                throw (e);
            }
            return resultado;  
        }
        #endregion
    
    }
    }
